gdk_surface_get_frame_clock
<SUBSECTION>
-gdk_surface_set_user_data
gdk_surface_set_accept_focus
gdk_surface_get_accept_focus
gdk_surface_set_focus_on_map
GDK_PARENT_RELATIVE
gdk_surface_set_cursor
gdk_surface_get_cursor
-gdk_surface_get_user_data
gdk_surface_get_geometry
gdk_surface_set_geometry_hints
gdk_surface_get_width
gdk_surface_get_parent
gdk_surface_get_toplevel
gdk_surface_get_children
-gdk_surface_get_children_with_user_data
gdk_surface_peek_children
gdk_surface_set_icon_name
gdk_surface_set_transient_for
PangoDirection gdk_find_base_dir (const char *text,
int len);
+void gdk_surface_set_widget (GdkSurface *surface,
+ gpointer widget);
+gpointer gdk_surface_get_widget (GdkSurface *surface);
+
#endif /* __GDK__PRIVATE_H__ */
GdkSurface *parent;
GdkSurface *transient_for;
- gpointer user_data;
+ gpointer widget;
gint x;
gint y;
g_object_unref (surface);
}
-/**
- * gdk_surface_set_user_data:
- * @surface: a #GdkSurface
- * @user_data: (allow-none) (type GObject.Object): user data
- *
- * For most purposes this function is deprecated in favor of
- * g_object_set_data(). However, for historical reasons GTK+ stores
- * the #GtkWidget that owns a #GdkSurface as user data on the
- * #GdkSurface. So, custom widget implementations should use
- * this function for that. If GTK+ receives an event for a #GdkSurface,
- * and the user data for the surface is non-%NULL, GTK+ will assume the
- * user data is a #GtkWidget, and forward the event to that widget.
- *
- **/
void
-gdk_surface_set_user_data (GdkSurface *surface,
- gpointer user_data)
+gdk_surface_set_widget (GdkSurface *surface,
+ gpointer widget)
{
- g_return_if_fail (GDK_IS_SURFACE (surface));
-
- surface->user_data = user_data;
+ surface->widget = widget;
}
-/**
- * gdk_surface_get_user_data:
- * @surface: a #GdkSurface
- * @data: (out): return location for user data
- *
- * Retrieves the user data for @surface, which is normally the widget
- * that @surface belongs to. See gdk_surface_set_user_data().
- *
- **/
-void
-gdk_surface_get_user_data (GdkSurface *surface,
- gpointer *data)
+gpointer
+gdk_surface_get_widget (GdkSurface *surface)
{
- *data = surface->user_data;
+ return surface->widget;
}
/**
return surface->children;
}
-
-/**
- * gdk_surface_get_children_with_user_data:
- * @surface: a #GdkSurface
- * @user_data: user data to look for
- *
- * Gets the list of children of @surface known to GDK with a
- * particular @user_data set on it.
- *
- * The returned list must be freed, but the elements in the
- * list need not be.
- *
- * The list is returned in (relative) stacking order, i.e. the
- * lowest surface is first.
- *
- * Returns: (transfer container) (element-type GdkSurface):
- * list of child surfaces inside @surface
- **/
-GList *
-gdk_surface_get_children_with_user_data (GdkSurface *surface,
- gpointer user_data)
-{
- GdkSurface *child;
- GList *res, *l;
-
- g_return_val_if_fail (GDK_IS_SURFACE (surface), NULL);
-
- if (GDK_SURFACE_DESTROYED (surface))
- return NULL;
-
- res = NULL;
- for (l = surface->children; l != NULL; l = l->next)
- {
- child = l->data;
-
- if (child->user_data == user_data)
- res = g_list_prepend (res, child);
- }
-
- return res;
-}
-
-
/**
* gdk_surface_is_visible:
* @surface: a #GdkSurface
void gdk_surface_focus (GdkSurface *surface,
guint32 timestamp);
GDK_AVAILABLE_IN_ALL
-void gdk_surface_set_user_data (GdkSurface *surface,
- gpointer user_data);
-GDK_AVAILABLE_IN_ALL
gboolean gdk_surface_get_accept_focus (GdkSurface *surface);
GDK_AVAILABLE_IN_ALL
void gdk_surface_set_accept_focus (GdkSurface *surface,
GdkCursor *gdk_surface_get_device_cursor (GdkSurface *surface,
GdkDevice *device);
GDK_AVAILABLE_IN_ALL
-void gdk_surface_get_user_data (GdkSurface *surface,
- gpointer *data);
-GDK_AVAILABLE_IN_ALL
void gdk_surface_get_geometry (GdkSurface *surface,
gint *x,
gint *y,
GList * gdk_surface_get_children (GdkSurface *surface);
GDK_AVAILABLE_IN_ALL
GList * gdk_surface_peek_children (GdkSurface *surface);
-GDK_AVAILABLE_IN_ALL
-GList * gdk_surface_get_children_with_user_data (GdkSurface *surface,
- gpointer user_data);
GDK_AVAILABLE_IN_ALL
void gdk_surface_set_icon_list (GdkSurface *surface,
#include "config.h"
#include "gtkrootprivate.h"
+#include "gdk/gdk-private.h"
/**
* SECTION:root
GtkWidget *
gtk_root_get_for_surface (GdkSurface *surface)
{
- gpointer user_data;
+ GtkWidget *widget;
- gdk_surface_get_user_data (surface, &user_data);
+ widget = (GtkWidget *)gdk_surface_get_widget (surface);
- if (user_data && GTK_IS_ROOT (user_data))
- return GTK_WIDGET (user_data);
+ if (widget && GTK_IS_ROOT (widget))
+ return widget;
return NULL;
}
is_my_surface (GtkWidget *widget,
GdkSurface *surface)
{
- gpointer user_data;
-
if (!surface)
return FALSE;
- gdk_surface_get_user_data (surface, &user_data);
- return (user_data == widget);
+ return gdk_surface_get_widget (surface) == widget;
}
/*
gtk_widget_register_surface (GtkWidget *widget,
GdkSurface *surface)
{
- gpointer user_data;
-
g_return_if_fail (GTK_IS_WIDGET (widget));
g_return_if_fail (GDK_IS_SURFACE (surface));
- gdk_surface_get_user_data (surface, &user_data);
- g_assert (user_data == NULL);
-
- gdk_surface_set_user_data (surface, widget);
+ g_assert (gdk_surface_get_widget (surface) == NULL);
+ gdk_surface_set_widget (surface, widget);
g_signal_connect (surface, "render", G_CALLBACK (surface_expose), widget);
g_signal_connect (surface, "event", G_CALLBACK (surface_event), widget);
gtk_widget_unregister_surface (GtkWidget *widget,
GdkSurface *surface)
{
- gpointer user_data;
-
g_return_if_fail (GTK_IS_WIDGET (widget));
g_return_if_fail (GDK_IS_SURFACE (surface));
- gdk_surface_get_user_data (surface, &user_data);
- g_assert (user_data == widget);
- gdk_surface_set_user_data (surface, NULL);
+ g_assert (gdk_surface_get_widget (surface) == widget);
+ gdk_surface_set_widget (surface, NULL);
g_signal_handlers_disconnect_by_func (surface, surface_expose, widget);
g_signal_handlers_disconnect_by_func (surface, surface_event, widget);